/**
 * 区块 类
 */
class TinyBlock {
  /**
   * 区块构造函数
   * @param id - 区块id
   * @param content - 区块内容
   * @param timeStamp - 时间
   * @param hash - 本区块哈希值
   * @param nounce - 工作证明
   * @param preHash - 上一个区块值
   */
  constructor(id, content, timeStamp, hash, nounce, preHash) {
    this.id = id;
    this.content = content;
    this.timeStamp = timeStamp;
    this.hash = hash;
    this.nounce = nounce;
    this.preHash = preHash;
  }

  /**
   * 从文件json反序列化出来的纯数据对象 转成 TinyBlock 对象
   * @param tinyBlockJsonObj - 从文件json反序列化出来的纯数据对象
   * @returns 获取各项属性值的 TinyBlock 对象(this)
   */
  static json2TinyBlock(jsonObj) {
    if (typeof jsonObj == 'string')
      jsonObj = JSON.parse(jsonObj);
    
    var blockObj = new TinyBlock();
    blockObj.id = jsonObj.id;
    blockObj.content = jsonObj.content;
    blockObj.timeStamp = jsonObj.timeStamp;
    blockObj.hash = jsonObj.hash;
    blockObj.nounce = jsonObj.nounce;
    blockObj.preHash = jsonObj.preHash;
    return blockObj;
  }
}

module.exports = TinyBlock;

